import { PropType } from 'vue'
import { Direction } from './constant'
import {
  DotType,
  LineType,
  PositionType,
  LabelPositionType,
  ModeType,
  ItemType
} from './type'

export const timelineProps = {
  /**
   * @dep 是否倒序
   */
  reverse: {
    type: Boolean
  },
  /**
   * @dep 时间轴方向
   * @values 'horizontal', 'vertical'
   */
  direction: {
    type: String as PropType<Direction>,
    default: 'vertical'
  },
  /**
   * @dep 时间轴的展示类型：时间轴在左侧，时间轴在右侧, 交替出现。
   * @values 'left','right','top','bottom','alternate'
   */
  mode: {
    type: String as PropType<ModeType>,
    default: 'left'
  },
  /**
   * @dep 设置标签文本的位置
   * @values 'relative', 'same'
   */
  labelPosition: {
    type: String as PropType<LabelPositionType>,
    default: 'same'
  }
}

export const timelineItemProps = {
  /**
   * @dep 节点类型
   */
  type: {
    type: String as PropType<ItemType>,
    default: 'default'
  },
  /**
   * @dep 节点颜色
   */
  dotColor: {
    type: String
  },
  /**
   * @dep 节点类型：空心圆/实心圆
   * @values 'hollow', 'solid'
   */
  dotType: {
    type: String as PropType<DotType>,
    default: 'solid'
  },
  /**
   * @dep 时间轴类型：实线/虚线/点状线
   * @values 'solid', 'dashed', 'dotted'
   */
  lineType: {
    type: String as PropType<LineType>,
    default: 'solid'
  },
  /**
   * @dep 时间轴颜色
   */
  lineColor: {
    type: String
  },
  /**
   * @dep 标签文本
   */
  label: {
    type: String
  },
  /**
   * @dep Item 位置,自定义左右,优先级大于mode定义的位置
   */
  position: {
    type: String as PropType<PositionType>
  },
  /**
   * @dep 节点顺序, 需要交替出现则为必传
   */
  index: {
    type: Number,
    default: 0
  }
}
